package com.web.activiti.service;

import com.web.activiti.pojo.BaoXiaoBill;
import com.web.activiti.pojo.Employee;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.task.Comment;
import org.activiti.engine.task.Task;
import java.math.BigDecimal;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

public interface ReimbFlowService {
    /**
     * 开始流程
     * @param baoXiaoBill
     * @param employee
     */
    void saveStartProcess (BaoXiaoBill baoXiaoBill , Employee employee);

    /**
     * 通过userid查看任务列表信息
     * @param name
     * @return
     */
    List<Task> findTaskListByUserId (String name);

    /**
     * 通过任务id查看报销单
     * @param taskId
     * @return
     */
    BaoXiaoBill findBillByTask (String taskId);

    /**
     * 查看报销单中的批注信息
     * @param taskId
     * @return
     */
    List<Comment> findCommentList (String taskId);

    /**
     * 用于推进流程
     * @param id
     * @param taskId
     * @param money
     * @param come
     * @param comment
     * @param name
     */
    void saveSubmitTask (long id , String taskId ,BigDecimal money,String come, String comment , String name);

    /**
     * 查看流程图
     * @param deploymentId
     * @param imageName
     * @return
     */
    InputStream findImageInputStream(String deploymentId, String imageName);

    /**
     * 通过任务id查看流程定义
     * @param taskId
     * @return
     */
    ProcessDefinition findProcessDefinitionByTaskId (String taskId);

    /**
     * 绘制流程执行阶段的框
     * @param taskId
     * @return
     */
    Map<String, Object> findCoordingByTask (String taskId);

    /**
     * 查看我的报销单
     * @param employee
     * @param isOk
     * @param pageNum
     * @return
     */
    List<BaoXiaoBill> findMyBaoXiaoBillByUser (Employee employee,boolean isOk,Integer pageNum);

    /**
     * 删除报销单通过id
     * @param id
     */
    void deleteBillById (String id);

    /**
     * 通过bussinesskey去查找任务信息
     * @param bussiness_key
     * @return
     */
    Task findTaskByBussinessKey (String bussiness_key);

    /**
     * 通过保险单id查批注信息
     * @param id
     * @return
     */
    List<Comment> findCommentByBaoxiaoBillId(long id);

    /**
     * 通过id查看报销单
     * @param id
     * @return
     */
    BaoXiaoBill findBillById (long id);

    /**
     * 通过id删除已经部署的流程信息
     * @param deploymentId
     */
    void delDeploymentById (String deploymentId);

    /**
     * 通过任务id查看流程的连线
     * @param taskId
     * @return
     */
    List<String> findOutComeListByTaskId(String taskId);
}
